﻿// Copyright 2013-2019 Dirk Lemstra <https://github.com/dlemstra/Magick.NET/>
//
// Licensed under the ImageMagick License (the "License"); you may not use this file except in
// compliance with the License. You may obtain a copy of the License at
//
//   https://www.imagemagick.org/script/license.php
//
// Unless required by applicable law or agreed to in writing, software distributed under the
// License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
// either express or implied. See the License for the specific language governing permissions
// and limitations under the License.

using System;
using System.Reflection;

namespace FileGenerator.MagickScript
{
    internal sealed class ColorProfileGenerator : ConstructorCodeGenerator
    {
        protected override string ClassName
        {
            get
            {
                return "ColorProfile";
            }
        }

        protected override void WriteCall(MethodBase method, ParameterInfo[] parameters)
        {
            throw new NotImplementedException();
        }

        protected override void WriteCode()
        {
            Write("private static ");
            Write(TypeName);
            Write(" Create");
            Write(ClassName);
            WriteLine("(XmlElement element)");
            WriteStartColon();
            foreach (string name in Types.GetColorProfileNames())
            {
                Write("if (element.GetAttribute(\"name\") == \"");
                Write(name);
                WriteLine("\")");
                Indent++;
                Write("return ColorProfile.");
                Write(name);
                WriteLine(";");
                Indent--;
            }
            WriteLine("throw new NotSupportedException(element.Name);");
            WriteEndColon();
        }

        protected override void WriteHashtableCall(MethodBase method, ParameterInfo[] parameters)
        {
            throw new NotImplementedException();
        }

        public ColorProfileGenerator()
        {
        }
    }
}
